
#include "DiscPlanning.h"


int handshake(int socket) {

	T_MENSAJE *mensaje;
	uint32_t sectores;
	char msg[5];

	msg[0] = parametros->IDdisk;
	sectores = parametros->diskCylinders * parametros->diskSectors;
	memcpy(msg+1,&sectores,4);

	mensaje = generarMensaje(TIPO_HANDSHAKE, 5, msg);

	if(enviarPorSocket(socket,mensaje)) {
		perror("enviarPorSocket");
		return -1;
	}

	if(recibirDeSocket(socket, &mensaje)) {
		perror("recibirDeSocket");
		return -1;
	}

	// No recibió un handshake vacío, hubo error =(
	if(mensaje->length > 0){

		if(*(uint8_t*)(mensaje->mensaje) == MSG_DISCO_DUPLICADO){
			printf("El ID de disco ya existe en el RAID\n");
		}

		if(*(uint8_t*)(mensaje->mensaje) == MSG_MAL_DISCO){
			printf("Disco inválido (posiblemente sea muy chico)\n");
		}

		eliminarMensaje(mensaje);

		return -1;
	}

	eliminarMensaje(mensaje);

	return 0;

}
